gesture: Don't leak stashed events
authorMatthias Clasen <mclasen@redhat.com>
Sun, 1 May 2016 17:23:12 +0000 (13:23 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 1 May 2016 17:26:35 +0000 (13:26 -0400)
These events were never freed.

gtk/gtkgesture.c

index 47fa3c56ceb252c3bbfc5ed2b6800d9ff3ea20bb..8eaa5187784fb4b18e5ff81a52dcac83cee6a4ef 100644 (file)
@@ -993,6 +993,17 @@ gtk_gesture_class_init (GtkGestureClass *klass)
                   GTK_TYPE_EVENT_SEQUENCE_STATE);
 }
 
+static void
+free_point_data (gpointer data)
+{
+  PointData *point = data;
+
+  if (point->event)
+    gdk_event_free (point->event);
+
+  g_free (point);
+}
+
 static void
 gtk_gesture_init (GtkGesture *gesture)
 {
@@ -1000,7 +1011,7 @@ gtk_gesture_init (GtkGesture *gesture)
 
   priv = gtk_gesture_get_instance_private (gesture);
   priv->points = g_hash_table_new_full (NULL, NULL, NULL,
-                                        (GDestroyNotify) g_free);
+                                        (GDestroyNotify) free_point_data);
   gtk_event_controller_set_event_mask (GTK_EVENT_CONTROLLER (gesture),
                                        GDK_TOUCH_MASK |
                                        GDK_TOUCHPAD_GESTURE_MASK);